﻿Public Class Cliente : Inherits Persona : Implements IEquatable(Of Cliente)
    Private _Email As String
    Private _TarjetaCredito As String
    ''' <summary>
    ''' Obtiene el email del cliente. Deberá contener las características de un correo electrónico, contener @ y ántes de ella tener 5 caracteres
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Email As String
        Get
            Return _Email
        End Get
        Set(ByVal value As String)
            If value.Contains("@") Then
                Dim partesEmail() As String = value.Split("@")

                If partesEmail(0).Length >= 5 AndAlso partesEmail.Length = 2 Then
                    _Email = value
                End If
            End If
        End Set
    End Property
    ''' <summary>
    ''' Obtendrá el número de la tarjeta de crédito. 
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property TarjetaCredito As String
        Get
            Return _TarjetaCredito
        End Get
        Set(ByVal value As String)
            If value.Length = 16 Then _TarjetaCredito = value
        End Set
    End Property
    ''' <summary>
    ''' Obtendrá la decha de caducidad de la tarjeta de credito
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property FechaCaducidad As String
    ''' <summary>
    ''' Constructor vacio
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

    End Sub
    ''' <summary>
    ''' El cliente se construye con datos
    ''' </summary>
    ''' <param name="nombre">Nombre</param>
    ''' <param name="contraseña">Contraseña</param>
    ''' <param name="email">Email</param>
    ''' <param name="tarjeta">Tarjeta</param>
    ''' <param name="fechaCaducidad">Fecha caducidad tarjeta</param>
    ''' <remarks></remarks>
    Public Sub New(ByVal nombre As String, ByVal contraseña As String, ByVal email As String, ByVal tarjeta As String, ByVal fechaCaducidad As String)
        Me.Nombre = nombre
        Me.Contraseña = contraseña
        Me.Email = email
        Me.TarjetaCredito = tarjeta
        Me.FechaCaducidad = fechaCaducidad
    End Sub
    ''' <summary>
    ''' Dos clientes serán iguales si tienen el mismo nombre
    ''' </summary>
    ''' <param name="other"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overloads Function Equals(other As Cliente) As Boolean Implements System.IEquatable(Of Cliente).Equals
        Return other IsNot Nothing AndAlso Me.Nombre.ToLower = other.Nombre.ToLower
    End Function
End Class
